https://codepen.io/stijnjanssen/pen/rYNPrN

var Toetsenbord = function(kleur, merk, toetsen){
  this.kleur = kleur;
  this.merk = merk;
  this.toetsen = toetsen;
  this.status = false;
};

// Prototype nu k als functie met RETURN voor afschermen private's!
Toetsenbord.prototype = function() { 
  var inschakelen = function(){
    this.status = !this.status;
  };
  
  return {
    inschakelen: inschakelen,
    getKleur: function() { return this.kleur; },
    getMerk: function() { return this.merk; },
    getToetsen: function() { return this.toetsen; },
    getStatus: function() { return this.status; }   
  }
}(); // wl direct uitvoeren voor opslaan

console.log(Toetsenbord);

var Toets = function(kleur, soortToets, schakelaarType){
	this.kleur = kleur;
	this.soortToets = soortToets;
	this.schakelaarType = schakelaarType;
}

Toets.prototype = function(){
	var indrukken = function() {
	  console.log("toets ingedrukt");
	}

	return {
	  indrukken: indrukken,
	  getKleur: function() { return this.kleur; },
	  getSoortToets: function() { return this.soortToets; },
	  getSchakelaarType: function() { return this.schakelaarType; }
	}
}(); // direct uitvoeren voor opslaan

var toetsenArray = [new Toets("grijs","w","mechanisch bruin"), new Toets("grijs","a","mechanisch bruin"),
		    new Toets("grijs","s","mechanisch bruin"), new Toets("grijs","d","mechanisch bruin")];

var mijnKeyboard = new Toetsenbord("zwart","Gigabyte",toetsenArray);

console.log(mijnKeyboard.getKleur());
console.log(mijnKeyboard.getStatus());

for (elem in mijnKeyboard.getToetsen()){
  console.log(mijnKeyboard.getToetsen()[elem]);
}